// Copyright (C) 2020 Rick Waldron.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-object.prototype.tostring
description: >
    Else if O has an [[ErrorData]] internal slot, let builtinTag be "Error".
---*/

function Test() {
    assert.sameValue(
      Error().toString(),
      'Error',
      'Error().toString() returns "Error"'
    );
    let tmp = Error.prototype.toString
    Error.prototype.toString = Object.prototype.toString;
    assert.sameValue(
      Error().toString(),
      '[object Error]',
      'Error().toString() returns "[object Error]" (Object.prototype.toString)'
    );
    Error.prototype.toString = tmp
}

// preheat
const NUMBER_OF_PREHEAT = 1;
for (let i = 0; i < NUMBER_OF_PREHEAT; i++) {
    Test();
}

ArkTools.jitCompileAsync(Test);
assert.sameValue(ArkTools.waitJitCompileFinish(Test), true, '[JIT] JIT disabled.');

// test
const NUMBER_OF_TEST = 1; // or 2
for (let i = 0; i < NUMBER_OF_TEST; i++) {
    Test();
}
